<?php
namespace core;
class Router
{
    private $routes = [];

    public function get($uri, $action)
    {
        $this->routes['GET'][$uri] = $action;
    }

    public function post($uri, $action)
    {
        $this->routes['POST'][$uri] = $action;
    }
    /**
     * 解析请求的 URI 和请求方法，执行对应的控制器方法
     *
     * @param string $uri 请求的 URI
     * @param string $method 请求的方法（如 GET、POST 等）
     * @return mixed 控制器方法的返回值
     * @throws \Exception 如果没有为该 URI 定义路由
     */
    public function resolve($uri, $method)
    {
        // 检查路由数组中是否存在当前请求方法和 URI 的路由
        if (isset($this->routes[$method][$uri])) {
            // 获取当前路由对应的控制器和方法
            $route = $this->routes[$method][$uri];
            // 将路由字符串按 @ 分割为控制器名和方法名
            list($controller, $action) = explode('@', $route);
            // 拼接完整的控制器命名空间
            $controller = "app\\controllers\\{$controller}";
            // 创建控制器实例
            $controllerInstance = new $controller();
            // 调用控制器的指定方法并返回结果
            return $controllerInstance->$action();
        }
        // 如果没有找到匹配的路由，抛出异常
        throw new \Exception('No route defined for this URI.');
    }
}